[アップデート] EC2 Image Builderで構築したAMIがAWS Organizations組織およびOUで共有可能となりました
こんにちは。サービスグループの武田です。
EC2イメージやコンテナイメージを作成するためのパイプラインを簡単に構築できるEC2 Image Builderというサービスがあります。これまでは作成したイメージは自身で使用するか、指定したアカウントIDと共有できました。今回のアップデートでAWS Organizationsの指定した組織あるいは組織単位(OU)での共有が可能となりました。これによって複数アカウントへの共有が簡単になります。
検証環境
執筆時(2021-11-29 15時時点)はマネジメントコンソールが組織の共有に対応していなかったため、ディストリビューション設定のみAWS CLIで作成しました。なお、AWS CLIも最新版へのアップデートが必要です。マネジメントコンソールが対応したら追記します。
$ aws --version aws-cli/2.4.2 Python/3.8.8 Darwin/20.5.0 exe/x86_64 prompt/off
やってみた
というわけでさっそく試していきましょう。
ディストリビューション設定の作成
次のようなJSONファイルを用意します。ここで123456789012
は組織のマネジメントアカウントのID、o-abcdefg123
は組織IDとなります。
{ "name": "Share Organizations", "description": "AMI Share", "distributions": [ { "region": "ap-northeast-1", "amiDistributionConfiguration": { "launchPermission": { "organizationArns": [ "arn:aws:organizations::123456789012:organization/o-abcdefg123" ] } } } ] }
これを入力としてCLIでディストリビューション設定を作成します。
$ aws imagebuilder create-distribution-configuration --cli-input-json file://dist-conf.json
イメージパイプラインの作成
それでは続いてイメージを作成するためのパイプラインを作成していきます。
パイプライン名はtest
としました。
ビルドスケジュールは1回作るだけですので手動です。
レシピは新しいものを定義します。
名前はtest
、バージョンは1.0.0
としました。この辺は任意の値で問題ありません。
ベースイメージはAmazon Linuxを使います。
ビルドコンポーネントの選択です。今回はPythonを入れてみました。
テストコンポーネントはrebootです。
インフラストラクチャ設定はデフォルトを使用します。
ディストリビューション設定は、最初にCLIで作成したものを使用します。問題なく作られていればShare Organizations
が選択できるはずです。
以上の設定で抜け漏れなどがなければイメージパイプラインが作成できるはずです。
イメージの作成
イメージの作成はパイプラインを実行するだけです。先ほど作成したパイプラインを実行してしばらく待ちましょう。
問題なく作成されました。
EC2のAMI一覧にも作成されたイメージが表示されていることが確認できます。
別アカウントで起動してみる
それでは 同じ組織の別アカウント に切り替えてみましょう。こちらのアカウントでは自己所有
だと表示されませんが、プライベートイメージ
にすると先ほど作成したものと同じイメージが表示されます。
起動も問題なくできました。
まとめ
マルチアカウント環境においてイメージ管理を1アカウントに集約させるケースで、その他のアカウントとAMIを共有するのが簡単になりますね。今回は試していませんがOUを指定しての共有もできるため、大きな組織であってもスコープを絞って共有でき管理コストの低減に役立つアップデートです。